Date : 8 septembre 1993
Protection : DISQUETTE CLEF
Programme : CYRUS CHESS
Outils : SOFT-ICE V2.50
Fichier : CYRUS.COM et CHESS.TSK
Temps pass� : 1 Heure
Soci�t� : INTELLIGENT CHESS SOFTWARE LTD
Divers : Fichiers en clair
Origine : B.Alain
Num�ro : 220
CYRUS CHESS ! Un de mes premier programmes de jeu en EGA !
C'est vrai qu'il y avait une protection disquette mais � l'�poque
je n'avais pas l'exp�rience n�cessaire pour faire sauter le
verrou.
Ce qui m'a incit� � jeter un oeil sur ce SOFT fut l'appel au-secours
qui suit: ( Adresse et NOM ont �t� supprim� )
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
B. Alain Snetsabar, le 28/08/93
chemin de la Croix blanche
88999 Snetsabar
Freddy,
Ayant lu une disquette de fichiers *.dep, je me permets de
vous �crire car j'ai tent� de d�plomber un jeu et n'y suis
parvenu que partiellement car je ne poss�de pas votre ma�trise.
Voici le r�sum� des �v�nements:
- le programme � d�prot�ger se nomme CYRUS.COM ( jeu
d'�checs).
- en le lan�ant, on obtient le message "Disque corrompu".
- avec AFD, je le fais tourner et remarque l'acc�s sur A:
MOV BX, 0830
MOV CX, 0201
MOV AX, 0204
INT 13
...
CMP AH, 04
- apr�s l'INT 13, AX est � 8000. Je fais une modification
en ligne sur AX � 0400, je lance un G et le programme tourne.
- je poursuis en faisant la modif en dur. Ayant rep�r� une
zone texte (102 et suivants), je court-circuite l'INT 13 par un
JMP 102 o� j'�cris:
MOV AX, (valeur lue sur la pile au retour de l'INT
13)
PUSHAX
POPF
MOV AX, 0400
JMP (adresse suivant l'INT 13)
- ces modifications sont dans le programme CYRUS1.COM mais
il ne tourne pas ( les fl�ches de d�placement ne fonctionnent
pas).
- retour au programme original et surprise: si on modifie
en ligne le registre AX � 0400 apr�s l'INT 13 et qu'on lance un
G, le programme tourne parfaitement. Si l'on tente, apr�s l'INT
13 et la modif sur AX, de suivre le programme par instruction,
il se plante. D�tecte-t-il le pas � pas ? Quaid Analyser en
pacth in/out sur la 10 m'envoie des tas de messages sur la
vid�o auxquels je ne comprends rien.
- je d�cide alors d'utiliser SOFT-ICE dont vous vantez les
qualit�s. H�las, je n'ai pas la doc de ce soft, et je ne sais
pas comment il est possible de faire d�rouler un programme et
d'examiner par la suite par o� il est pass� ( est-ce cela que
l'on appelle le back trace ? ). Malgr� plusieurs tentatives, (
XRSET, TRACE 100, XP, SHOW) rien ne se passe et je jette
l'�ponge, d'autant plus que cette version 2.50 de SOFT-ICE
simule un clavier QWERTY.
L'ultime solution, c'est Freddy, me dis-je !! Voil�
donc la raison de cette lettre. J'en profite pour y ajouter
quelques questions:
- Pourriez-vous me faire parvenir une doc de SOFT-ICE ? (
je peux photocopier).
- Pourquoi avec SOFT-ICE ai-je un clavier QWERTY ?
- Qu'est-ce que le back trace en comment en faire avec
SOFT-ICE ?
- Comment �viter la d�tection du pas � pas par un
programme ?
- Avec SOFT-ICE, quelle configuration de CONFIG.SYS ?
- Connaissez-vous la protection Cadenas ?
- Existe-t-il un programme lisant le header d'un fichier (
si vous l'avez, pouvez-vous me l'envoyer ?).
- Pourriez-vous m'adresser les derniers *.dep ? ( > juin
1992)
Ces informations me permettraient de mieux utiliser SOFT-
ICE et ainsi de tenter de nouvelles aventures de d�plombage ( �
mon niveau qui est tr�s modeste ).
Vous remerciant par avance pour votre gentillesse et pour
la qualit� de vos informations, je vous prie de croire, cher
Freddy, � l'assurance de mes sentiments les meilleurs.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Je reprends donc du d�but le cheminement de B.A.
L'INT13 est utilis�e pour l'acc�s au lecteur de disquette. Il faut
bien sur passer les 20 premi�res it�rations qui concernent le disque
dur. Au bout de la vingt et uni�me le lecteur se manifeste...
Au retour on teste le contenu du registre AH qui doit contenir 04.
Comment le sais-je, parce-que un peu plus loin on fait un CMP AH,04.
En faisant la modif "ON LINE" le soft fonctionne. Bien. Cela semble
bien facile mais la suite va d�montrer le contraire.
CS=1110
CS:01AD BB3008 MOV BX,0830
CS:01B0 B90102 MOV CX,0201
CS:01B3 B80402 MOV AX,0204
CS:01B6 CD13 INT 13
CS:01B8 59 POP CX
CS:01B9 720A ���< JB 01C5
CS:01BB BACD00 � MOV DX,00CD ; AFFICHAGE DU MESSAGE
CS:01BE B409 � MOV AH,09 ; "DISQUE CORROMPU"
CS:01C0 CD21 � INT 21 ; PAR INT 21 SF 09.
CS:01C2 E973FF � JMP 0138
CS:01C5 80FC04 ���> CMP AH,04 ; On vient ici pour tester.
CS:01C8 740F JZ 01D9 ; Si OK on saute en 01D9.
La modification faite simplement dans le fichier en for�ant le saut
ne donne rien, en pla�ant 04 dans AH avant le test cela ne fonctionne
pas mieux. Cr�non !
Quand je dis que le soft ne fonctionne pas je veux simplement dire
qu'il se charge normalement en fait mais que les touches de
d�placement ne sont plus valid�es. L'entr�e des codes au clavier du
style E2E4 est gel�e �galement.
Je fulmine pendant une demi-heure essayant toutes sortes de manips
sans le moindre r�sultat... puis, la lumi�re vint.
Lorsque je fais ma modif en volant, en for�ant un flag ou en mettant
04 dans AH, je ne modifie pas le code du programme et �a fonctionne.
Par contre d�s que l'on modifie le source on ne peut plus jouer !
Il doit y avoir un test de CRC quelque part de tout le programme ou
plus simplement de la partie qui va tester la disquette.
Je place un point d'arr�t en lecture du test qui suit l'INT13, et hop
SOFT-ICE r�apparait une fois que l'image est affich�e !
BPMB 1110:01C8 R
Le test du CRC se fait en CS:1918, il suffit de le forcer pour
pouvoir faire toutes les modifs que l'on veut autour de l'INT13.
Test du CRC: ( cette routine se trouve dans le fichier CHESS.TSK )
CS=2649
CS:1908 AC LODSB
CS:1909 03D8 ADD BX,AX
CS:190B E2FB LOOP 1908
CS:190D 07 POP ES
CS:190E 1F POP DS
CS:190F 80268724EF AND BYTE PTR [2487],EF
CS:1914 81FB71CB CMP BX,CB71 ; Le CRC doit �tre �gal � CB71.
CS:1918 7405 JZ 191F ; A forcer par EB ( jmp ).
CS:191A 800E872410 OR BYTE PTR [2487],10 ; ici on emp�che les
; touches.
CS:191F E8B001 CALL 1AD2 ; Suite....
Et voici la modif � faire apr�s l'INT 13 pour forcer le test:
CS:01B6 CD13 INT 13
CS:01B8 59 POP CX
CS:01B9 EB1E JMP 01D9
Avec PCTOOLS chercher dans le fichier CYRUS.COM:
Chercher: B90102B80402CD1359720A
Modifier: ..................EB1E
Et dans le fichier CHESS.TSK:
Chercher: 81FB71CB7405
Modifier: ........EB..
FREDDY
|